package com.youlai.boot.common.excel;

import com.youlai.boot.common.result.ExcelResult;

import java.util.List;

/**
 * Excel数据处理器接口
 * 
 * @author Jason
 * @since 2024/05/18
 */
public interface ExcelDataHandler<T> {
    
    /**
     * 获取Excel实体类
     * 
     * @return Excel实体类
     */
    Class<T> getEntityClass();
    
    /**
     * 获取Excel文件名（不含扩展名）
     * 
     * @return 文件名
     */
    default String getFileName() {
        return "导出数据";
    }
    
    /**
     * 获取Excel表单名
     * 
     * @return 表单名
     */
    default String getSheetName() {
        return "Sheet1";
    }
    
    /**
     * 获取导出数据
     * 
     * @param query 查询参数
     * @return 导出数据列表
     */
    List<T> getExportData(Object query);
    
    /**
     * 处理导入数据
     * 
     * @param dataList 解析的数据列表
     * @param result 导入结果
     */
    void handleImportData(List<T> dataList, ExcelResult result);
    
    /**
     * 获取模板数据（可用于下载导入模板）
     * 
     * @return 模板数据列表
     */
    default List<T> getTemplateData() {
        return List.of();
    }
} 